package conservare.dao;

import java.util.List;

import javax.persistence.EntityTransaction;
import javax.persistence.NoResultException;

import conservare.modelo.Pessoa;

public class PessoaDAO extends Dao{

	private static final long serialVersionUID = -6079539726368271826L;

	public Pessoa salvar(Pessoa pessoa) {
		
		EntityTransaction transaction = getEm().getTransaction();
		transaction.begin();
		
		if(pessoa.getId() == null){
			getEm().persist(pessoa);
		}else{
			getEm().merge(pessoa);
		}
		
		transaction.commit();
		
		return getById(pessoa.getId());
		
	}
	
	public Pessoa getById(Integer id) {
		return getPojo(Pessoa.class, id);
	}
	
	public Pessoa getByNumeroCpfCnpj(String numeroCpfCnpj) throws NoResultException {
		try {
			return getPojo(Pessoa.class, "select a from Pessoa a where a.cpfCnpj.numero = ?1", numeroCpfCnpj);
		} catch (NoResultException e) {
			throw new NoResultException();
		}catch(Exception e){
			e.printStackTrace();
		}
		
		return null;
	}
	
	
	public List<Pessoa> getTodos() {
		return getList(Pessoa.class, "select c from Pessoa c order by c.nome");
	}
}
